/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifconnect.view.managedBean;

import ifconnect.model.dao.DaoGenerico;
import ifconnect.model.entity.Curso;
import ifconnect.model.entity.Turma;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Fidélis
 */
@ManagedBean
@ViewScoped
public class TurmaMB {

    private Turma turma;
    private Turma turmaSelecionada;
    private List<Curso> listaCursos;
    private List<Turma> listaTurmas;
    private DaoGenerico dao;
    private Long idCurso;
    
    /** Creates a new instance of TurmaMB */
    public TurmaMB() {
        this.turma = new Turma();
        this.turmaSelecionada = new Turma();
        this.dao = new DaoGenerico();
        this.listaCursos = this.dao.listarTodos(Curso.class);
        this.listaTurmas = this.dao.listarTodos(Turma.class);
    }

    public List<Curso> getCursos() {
        return listaCursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.listaCursos = cursos;
    }

    public Turma getTurmaSelecionada() {
        return turmaSelecionada;
    }

    public void setTurmaSelecionada(Turma turmaSelecionada) {
        this.turmaSelecionada = turmaSelecionada;
    }

    public List<Curso> getListaCursos() {
        return listaCursos;
    }

    public void setListaCursos(List<Curso> listaCursos) {
        this.listaCursos = listaCursos;
    }

    public List<Turma> getListaTurmas() {
        return listaTurmas;
    }

    public void setListaTurmas(List<Turma> listaTurmas) {
        this.listaTurmas = listaTurmas;
    }
    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public Long getIdCurso() {
        return idCurso;
    }

    public void setIdCurso(Long idCurso) {
        this.idCurso = idCurso;
    }

    
    public void addTurma(){
        Curso donoTurma = this.buscaCurso(this.idCurso);
        this.turma.setCurso(donoTurma);

        String msg = this.dao.salvar(this.turma);

        FacesMessage message = new FacesMessage(msg);
        message.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext.getCurrentInstance().addMessage(null, message);

        this.idCurso = null;
        this.turma = new Turma();
        this.listaTurmas = null;
        this.atualizaLista();
    }
    
    public void excluirTurma(){
        if (this.turmaSelecionada != null) {
            String msg = this.dao.remover(this.turmaSelecionada);
            FacesMessage message = new FacesMessage(msg);
            message.setSeverity(FacesMessage.SEVERITY_INFO);
            FacesContext.getCurrentInstance().addMessage(null, message);
            
            this.listaTurmas = null;
            this.atualizaLista();
        }
    }
    
    public void atualizaTurma(){
        if (this.turmaSelecionada != null) {
            this.turma = this.turmaSelecionada;
            this.idCurso = this.turma.getCurso().getId();
        }
    }
    
    public void atualizaLista() {
        if (this.listaTurmas == null) {
            this.listaTurmas = this.dao.listarTodos(Turma.class);
        }
    }
    
    private Curso buscaCurso(Long id) {
        for (Iterator<Curso> it = listaCursos.iterator(); it.hasNext();) {
            Curso c = it.next();
            if (c.getId() == id) {
                return c;
            }
        }
        return null;
    }
}
